package org.fin.framework.ioc.beans;

/**
 * 在bean实例化并完成注入后执行，BeanPostProcessor的简化版
 * <b>注意点: 被BeanInterceptor依赖的Bean和依赖链上的所有Bean，都无法应用BeanInterceptor的方法，
 *    其次，BeanInterceptor本身不会被其他BeanInterceptor拦截
 *    </b>
 */
public interface BeanInterceptor {

  /**
   * Bean完成依赖注入后执行
   * @param beanName    正在初始化的bean id
   * @param bean        正在初始化的bean实例
   * @return            返回处理完毕的bean
   */
  default Object intercept(String beanName, Object bean) {
    return bean;
  }
}
